class Node:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

class CircularLinkedList:
    def __init__(self):
        self.head = None

    def is_empty(self):
        return self.head is None

    def insert_at_tail(self, val):
        new_node = Node(val)
        if self.is_empty():
            new_node.next = new_node
            self.head = new_node
            return
        current = self.head
        while current.next != self.head:
            current = current.next
        current.next = new_node
        new_node.next = self.head

    def find_node(self, val):
        """查找循环链表中值为val的节点，存在返回True，否则返回False"""
        if self.is_empty():
            return False
        current = self.head
        while True:
            if current.val == val:
                return True
            current = current.next
            if current == self.head:
                break
        return False

    def traverse(self):
        if self.is_empty():
            return []
        result = []
        current = self.head
        while True:
            result.append(current.val)
            current = current.next
            if current == self.head:
                break
        return result

# 测试
if __name__ == "__main__":
    cll = CircularLinkedList()
    cll.insert_at_tail(1)
    cll.insert_at_tail(2)
    cll.insert_at_tail(3)
    print("是否存在2:", cll.find_node(2))  # 输出: True
    print("是否存在4:", cll.find_node(4))  # 输出: False